﻿//字段对象，给Ext.data.Model使用
Ext.data.Field = Ext.extend(Object, {

    constructor: function (config) {

        //如果只是一个字符串，则默认为字段名
        if (Ext.isString(config)) {
            config = { name: config };
        }

        //如果是配置对象，直接继承其属性
        Ext.apply(this, config);

        // Ext.data.Types对象封装了字段默认的类型、排序、特殊值转换等信息
        var types = Ext.data.Types,
            st = this.sortType,
            t;

        // 如果有定义类型
        if (this.type) {
            if (Ext.isString(this.type)) {
                // 从Ext.data.Types中取出对应的类型数据，没找到则用 AUTO 类型
                this.type = types[this.type.toUpperCase()] || types.AUTO;
            }
        } else {
            this.type = types.AUTO; // 没定义type则使用默认 AUTO 类型
        }

        // 字段排序
        if (Ext.isString(st)) {
            this.sortType = Ext.data.SortTypes[st];
        } else if (Ext.isEmpty(st)) {
            this.sortType = this.type.sortType;
        }

        // 没有默认转换函数，则使用本类型定义的默认转换函数
        if (!this.convert) {
            this.convert = this.type.convert;
        }
    },
    dateFormat: null, // 将属性值转换成Date对象所用的格式
    useNull: false, // Number类型的值转换失败时是否用null代替（是为null，否为0）
    defaultValue: "", // 字段默认值，字段值为undefined时使用
    mapping: null, // 属性名对应的表达式
    sortType: null, // 字段排序对比函数
    sortDir: "ASC", // 排序方向（升序或降序）
    allowBlank: true
});